<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 自定义事件 callback 寄存到某处 某个条件下触发 
        // 创建了一个 EventEmitter 类
        class EventEmitter {
            constructor() {
                // 所有的事件 event loop 
                this.events =  new Map()  // es6 新的数据结构 HashMap {}  0 (1)
            }
            // type callback
            // 订阅
            addListener(type, fn) {
                if(!this.events.get(type)) {
                    this.events.set(type,fn) // 事情回调存进去
                }
            }
            // 触发事件  fire emit
            // type 必穿的第一个参数
            // 发布
            emit (type) {
                let handle = this.events.get(type); // 处理函数
                handle.apply(this,[...arguments].slice(1)) // call bind 
            }
        }
        let emitter = new EventEmitter('interview') // 自定义事件的类
        emitter.addListener('interview',(salary,position)=> { // 自定义事件
            console.log(`这里有一个月薪${salary} 的 ${position} 岗位 欢迎面试`)
        })
        setTimeout( () => {
            emitter.emit('interview','20000','工程师')
        },2000)
    </script>
</body>
</html>